home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / laptop-mode-tools / modules / dpms-standby < prev    next >
Text File  |  2009-10-06  |  2KB  |  67 lines

  1. #! /bin/sh
  2. #
  3. # Laptop mode tools module: control X display standby / suspend / off using DPMS
  4. #
  5.  
  6.  
  7. # getXuser gets the X user belonging to the display in $displaynum.
  8. # (This code was borrowed from the Debian acpi-support package.)
  9. getXuser() {
  10.     user=`w -hs | awk '{ if ($3 == ":'$displaynum'" || $3 ~ /:'$displaynum'\..*/ || $2 == ":'$displaynum'" || $2 ~ /:'$displaynum'\..*/) { print $1; exit; } }'`
  11.     if [ x"$user" = x"" ]; then
  12.         startx=`pgrep -n startx`
  13.         if [ x"$startx" != x"" ]; then
  14.             user=`ps -o user --no-headers $startx`
  15.         fi
  16.     fi
  17.     if [ x"$user" != x"" ]; then
  18.             userhome=`getent passwd $user | cut -d: -f6`
  19.             export XAUTHORITY=$userhome/.Xauthority
  20.     else
  21.         export XAUTHORITY=""
  22.     fi
  23.     export XUSER=$user
  24. }
  25.  
  26.  
  27. # Set X screen standby/suspend/powerdown timing
  28. if [ x$CONTROL_DPMS_STANDBY = x1 ] ; then
  29.     if [ $ON_AC -eq 1 ]; then
  30.         if [ "$ACTIVATE" -eq 1 ]; then
  31.             STANDBY="$LM_AC_DPMS_STANDBY"
  32.             SUSPEND=$(($STANDBY+30))
  33.             OFF=$(($STANDBY+60))
  34.         else
  35.             STANDBY="$NOLM_AC_DPMS_STANDBY"
  36.             SUSPEND=$(($STANDBY+300))
  37.             OFF=$(($STANDBY+600))
  38.         fi
  39.     else
  40.         STANDBY="$BATT_DPMS_STANDBY"
  41.         SUSPEND=$(($STANDBY+30))
  42.         OFF=$(($STANDBY+60))
  43.     fi
  44.  
  45.     # Loop through all X servers using their unix domain sockets.
  46.     # (Partly borrowed from the Debian acpi-support package.)
  47.     for x in /tmp/.X11-unix/*; do
  48.         if [ -e "$x" ] ; then
  49.             displaynum=`echo $x | sed -r 's#/tmp/.X11-unix/X([0-9]*)$#\1#'`
  50.             $LM_VERBOSE && echo "Determining Xauthority for display $displaynum" >> $OUTPUT
  51.             getXuser;
  52.             if [ x"$XAUTHORITY" != x"" ]; then
  53.                 export DISPLAY=":$displaynum"        
  54.                 if su $XUSER -c "xset dpms $STANDBY $SUSPEND $OFF" 2>> $OUTPUT | grep -q display >> $OUTPUT 2>&1 ; then
  55.                     $LM_VERBOSE && echo "Unable to set DPMS timeouts: X is not running on $DISPLAY" >> $OUTPUT
  56.                 else 
  57.                     $LM_VERBOSE && echo "Set screen $DISPLAY for the user $XUSER to standby in $STANDBY s, suspend in $SUSPEND s, powerdown in $OFF s using Xauthority $XAUTHORITY" >> $OUTPUT
  58.                 fi
  59.             else
  60.                 $LM_VERBOSE && echo "Unable to determine Xauthority for display :$displaynum." >> $OUTPUT
  61.             fi
  62.         fi
  63.     done
  64. else
  65.     $LM_VERBOSE && echo "CONTROL_DPMS_STANDBY is disabled, skipping..." >> $OUTPUT
  66. fi
  67.